package com.dgz.csmall.product.service;

import com.dgz.csmall.product.pojo.param.AlbumAddNewParam;
import com.dgz.csmall.product.pojo.param.AlbumUpdateInfoParam;
import com.dgz.csmall.product.pojo.vo.AlbumListItemVO;
import com.dgz.csmall.product.pojo.vo.AlbumStandardVO;
import com.dgz.csmall.commons.pojo.vo.PageData;
import org.springframework.transaction.annotation.Transactional;

/**
 * @Author duguozheng
 * @Date 2023/05/09  16:02
 * @Description 处理相册数据的业务接口
 * @Version 1.0
 */
@Transactional
public interface AlbumService {

    /**
     * 新增相册
     * @param albumAddNewParam 相册数据
     */
    void addNew(AlbumAddNewParam albumAddNewParam);

    /**
     * 根据ID删除相册
     * @param id 尝试删除的相册的ID
     */
    void delete(Long id);

    /**
     * 修改指定ID的相册数据
     * @param id 要修改的相册的ID
     * @param albumUpdateInfoParam 新的相册数据
     */
    void updateInfoById(Long id, AlbumUpdateInfoParam albumUpdateInfoParam);

    /**
     * 根据ID查询相册数据详情
     * @param id 相册ID
     * @return 匹配的相册详情数据，没有匹配数据则返回null
     */
    AlbumStandardVO getStandardById(Long id);

    /**
     * 查询相册数据列表，将使用默认的每页记录数
     * @param pageNum 页码
     * @return 相册数据列表
     */
    PageData<AlbumListItemVO> list(Integer pageNum);

    /**
     * 查询相册数据列表
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 相册数据列表
     */
    PageData<AlbumListItemVO> list(Integer pageNum, Integer pageSize);

    /**
     * 重建缓存
     */
    void rebuildCache();
}
